#include<stdio.h>
#include<stdlib.h>
int noOperations;
struct node{
	int a;
	struct node *link;
};
typedef struct node node;
node *start;
node *end;
int count=0;

void display(){
	node *temp=start;
	while(temp!=NULL){
		printf("%d\n",temp->a);
		temp=temp->link;
	}

}


/*void add(int n){
	node*	temp=(node*)malloc(sizeof(node));
	if(temp){
		temp->a=n;
		temp->link=NULL;	
	}
	if(start){
		end->link=temp;
		end=temp;
	}
	else{
		start=temp;
		end=temp;
		
	}
	
}
*/

void sortedAdd(int n){
	
	node *ptr=start;
	node *bkptr=NULL;
	node *temp=(node*)malloc(sizeof(node));
	temp->a=n;
	temp->link=NULL;
	if(ptr!=NULL){
		while(ptr&&ptr->a<n){
			bkptr=ptr;
			ptr=ptr->link;
		}
		if(bkptr==NULL){
			temp->link=start;
			start=temp;	
		}
		
		else{
			temp->link=bkptr->link;
			bkptr->link=temp;
		}
	}
	else{
		start=temp;
	}
	count++;
		
	}

int removeEl(int n){
	node*ptr=start;
	node *bkptr;
	while(ptr!=NULL){
		if(ptr->a==n){
			break;
		}
		bkptr=ptr;
		ptr=ptr->link;
	}

	if(ptr==NULL){
		return -1;
	}
	else{
		count--;
		bkptr->link=ptr->link;
	}
}

float median(){
	
	node *ptr=start;
	int index=1;
	float sum=0;
	if(count>0&&count%2==0){
		while(index!=count/2){
			index++;
			ptr=ptr->link;
		}
		sum=ptr->a;
		sum=sum+ptr->link->a;
		sum=sum/2;
	}
	else
		if(count!=1&&count%2!=0){
			while(index!=count/2){
      index++;
      ptr=ptr->link;
   	 }
			sum=ptr->link->a;
		}	
		else{
			sum=ptr->a;
		}
	return sum;
	
}

	
void main(){
	start=NULL;
	end=NULL;
	scanf("%d",&noOperations);
	char *tempStr=(char*)malloc(sizeof(char));
	int i =0;
	for(i=0;i<noOperations;i++){
		gets(tempStr);
		printf("%s",tempStr);
	}
/*	
	sortedAdd(2);
	display();	
	printf("median %f\n",median());
	sortedAdd(3);
	display();
	printf("median %f\n",median());
	sortedAdd(2);
	display();
	printf("median %f\n",median());
	int r=	removeEl(4);
	if(r==-1){
		printf("Wrong! input 4\n");
	}
	if(removeEl(3)==-1)
		printf("Worng input\n");
	printf("hi");
*/
}
